/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.nextel.util.push;

import com.mot.iden.multimedia.Vibrator;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;

/**
 *
 * @author ibonilla
 */
public class Gallina implements Runnable {
    
    private boolean cantar = false;
    private static final int BULLA = 1;
    private static final int SILENCIO = 0;
    private int faseCacareo = SILENCIO;
    private static final int DURACION_CACAREO = 500;
    private static final int DURACION_SILENCIO = 300;
    public Thread thread;
    
    public void iniciaGallina() {
//        System.out.println("Gallina - iniciaGallina");
        if (thread == null) {
            thread = new Thread(this);
            cantar = true;
            thread.start();
        }
    }
    
    public void callaGallina() {
//        System.out.println("Gallina - callaGallina");
        cantar = false;
//        while (thread.isAlive()) {
//        }
        thread=null;
        
    }
    
    public void run() {
//        System.out.println("");
//        System.out.println("Gallina - run");
        try {
            Vibrator.vibratePeriodicaly(200, 100);
            
        }catch(Exception e) {
            //e.printStackTrace();
        }
//        System.out.println("");
//        System.out.println("======> cantar: "+cantar);
//
//        System.out.println("======> faseCacareo: "+faseCacareo);
        
        while (cantar) {
            switch (faseCacareo) {
                case SILENCIO:
                    cacareo();
//                    System.out.println("cacareo");
                    faseCacareo = BULLA;
                    break;
                case BULLA:
                    esperar(DURACION_CACAREO + DURACION_SILENCIO);
                    faseCacareo = SILENCIO;
                    break;
            }
        }
        Vibrator.vibratorOff();
        
    }
    
    private void cacareo() {
        try {
//            System.out.println("****** cacareo *****");
            
            Manager.playTone(127, DURACION_CACAREO, 100);
            
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
    }
    
    public static void esperar(long i) {
//        System.out.println("&&&&& esperar &&&&&");
        
        long tiempo1 = System.currentTimeMillis();
        while ((System.currentTimeMillis() - tiempo1) < i) {
        }
        
    }
}
